/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.fifa.informacion_mundialista.ejbs;

import com.fifa.informacion_mundialista_data.entities.Equipo;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.ejb.EJBContext;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;

/**
 *
 * @author prodas
 */
@LocalBean
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class EquipoManagerBMT {

    @PersistenceContext
    private EntityManager em;

    @Resource
    private EJBContext ctx;

    /**
     * Elimina un equipo de la base de datos
     *
     * @param equipo
     * @return true si el equipo fue eliminado exitosamente, false en caso
     * contrario
     */
    public boolean eliminarEquipo(Equipo equipo) {
        UserTransaction utx = ctx.getUserTransaction();

        try {
            utx.begin();
            equipo = em.find(Equipo.class, equipo.getId());
            equipo.setNombre(equipo.getNombre() + "tmp");
            utx.commit();

            utx.begin();
//            equipo = em.merge(equipo);
            equipo = em.getReference(Equipo.class, equipo.getId());
            em.remove(equipo);
            utx.commit();
            
            return true;
        } catch (Exception e) {
            Logger.getLogger(EquipoManager.class.getName()).log(Level.SEVERE,
                    "Error al eliminar el equipo", e);
            try {
                utx.rollback();
            } catch (Exception ex) {
                Logger.getLogger(EquipoManagerBMT.class.getName()).log(Level.SEVERE, null, ex);
            }
            return false;
        }
    }
}
